package com.le.tester.book.effectivejava3rdchinese.articletweennine;


import java.util.ArrayList;
import java.util.EmptyStackException;
import java.util.List;

/**
 * createTime：2022/8/17 16:28
 * description：使用泛型，使得类可以参数化
 */
public class LStack<E> {
    //不使用数组来声明泛型
    //private E[] elements;
    //能使用还是优先使用的，不能使用的话，再使用数组进行泛型的解析
    private List<E> elements;

    private int size = 0;

    private static final int DEFAULT_INITIAL_CAPACITY = 16;

    public LStack() {
        elements = new ArrayList<>(DEFAULT_INITIAL_CAPACITY);
    }

    public void push(E e) {
        elements.set(size++, e);
    }


    public E pop() {
        if (size == 0) {
            throw new EmptyStackException();
        }
        E result = elements.get(--size);
        elements.set(size, null);
        return result;
    }
}
